package forn;

import bd.ConBdSqlS;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Date;
import util.Util;

/**
 *
 * @author camilo
 */
public class FornecedoresDao {

  protected Connection con;

  public FornecedoresDao() throws SQLException {
    this.con = ConBdSqlS.getConexao();
  }

  public void adicionar(Fornecedores f) throws SQLException {
    NumberFormat nfs = new DecimalFormat("000000");
//    Código SQL
    String sql = "INSERT INTO fornecedores(ID, CNPJ, IE, RazaoSocial, NomeFantasia, "
            + "Convenio, OperadorCadastro, DataCadastro, ClassificacaoFornecedor, AliquotaFiscal, "
            + "TipoICMS, Status, TipoFornecedor) "
            + "VALUES (?, ?, ?, ?, ?, "
            + "?, ?, ?, ?, ?, "
            + "?, ?, ?);";
    PreparedStatement stmt = con.prepareStatement(sql);

    //    Captura os valores dos atributos dos objetos e seta os parâmetros SQL
    String id = nfs.format(Double.parseDouble(f.getId()));
    stmt.setString(1, id); // id
    stmt.setString(2, f.getCnpj()); // CNPJ
    stmt.setString(3, f.getIe()); // IE
    stmt.setString(4, f.getRazaoSocial()); // Razão Social
    stmt.setString(5, f.getNomeFantasia()); // Nome Fantasia
    stmt.setString(6, "0"); // Convênio
    stmt.setString(7, "4"); // Operador cadastro
    stmt.setString(8, new Util().formatData(new Date(System.currentTimeMillis()))); // Data Cadastro
    stmt.setString(9, "0"); // Classificação Fornecedor
    stmt.setString(10, "0"); // Alíquota Fiscal
    stmt.setString(11, "0"); // Tipo ICMS
    stmt.setBoolean(12, false); // Status
    stmt.setString(13, "2"); // Tipo Fornecedor

    //    Executa o código SQL
    stmt.execute();
//    Fecha a conexão
    stmt.close();
  }

  public Fornecedores getForn(String cnpj) throws SQLException {
    Fornecedores f = new Fornecedores();//instancia um novo objeto
    //    Código SQL
    String sql = "SELECT ID, Id2, CNPJ, IE, RazaoSocial, NomeFantasia, Observacoes, FornecedorGrupo, "
            + "SituacaoCredito, Motivo, Convenio, OperadorCadastro, OperadorAltera, DataCadastro, "
            + "DataAlteracao, ClassificacaoFornecedor, AliquotaFiscal, TipoICMS, Status, CodigoSuframa, "
            + " TipoFornecedor, LeadTime "
            + "FROM Fornecedores "
            + "WHERE (cnpj LIKE ?);";

    PreparedStatement stmt = this.con.prepareStatement(sql);
    stmt.setString(1, "%" + cnpj);//Define o critério da consulta
    ResultSet rs = stmt.executeQuery();//executa a consulta SQL
//    percorre os registros da tabela e seta os valores das classes
    while (rs.next()) {
      f.setId(rs.getString("id"));
      f.setId2(rs.getInt("id2"));
      f.setCnpj(rs.getString("cnpj"));
      f.setIe(rs.getString("ie"));
      f.setRazaoSocial(rs.getString("razaosocial"));
      f.setNomeFantasia(rs.getString("nomefantasia"));
      f.setObservacoes(rs.getString("observacoes"));
      f.setFornecedorGrupo(rs.getInt("fornecedorgrupo"));
      f.setSituacaoCredito(rs.getInt("situacaocredito"));
      f.setMotivo(rs.getString("motivo"));
      f.setConvenio(rs.getInt("convenio"));
      f.setOperadorCadastro(rs.getString("operadorcadastro"));
      f.setOperadorAltera(rs.getString("operadoraltera"));
      f.setDataCadastro(rs.getDate("datacadastro"));
      f.setDataAlteracao(rs.getDate("dataalteracao"));
      f.setClassificacaoFornecedor(rs.getInt("classificacaofornecedor"));
      f.setAliquotaFiscal(rs.getString("aliquotafiscal"));
      f.setTipoIcms(rs.getString("tipoicms"));
      f.setStatus(rs.getBoolean("status"));
      f.setCodigoSuframa(rs.getString("codigosuframa"));
      f.setTipoFornecedor(rs.getInt("tipofornecedor"));
      f.setLeadTime(rs.getInt("leadtime"));
    }
//    fecha as conexões
    rs.close();
    stmt.close();

    return f;
  }
}
